home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / magazyn_amiga / 6 / ami016_a500_i_2_at-bus.txt < prev    next >
Text File  |  1997-09-16  |  5KB  |  117 lines

  1.  
  2. AMIGA 500 I DWA AUTOBUSY
  3.      
  4. <lead>Do napisania tego krótkiego artykuîu skîoniîy mnie
  5. pojawiajâce sië w Internecie pytania, dotyczâce sposobu
  6. podîâczenia drugiego urzâdzenia ze zîâczem AT-Bus do Amigi 500,
  7. rozbudowanej o kontroler twardego dysku -- Mega Ram HD -- firmy
  8. Elsat.
  9.  
  10. <a>Paweî Stypuîa
  11.  
  12. <txt>Do podîâczenia drugiego urzâdzenia standardu AT-Bus
  13. potrzebna jest taôma do twardego dysku 3,5-calowego z trzema
  14. nasadkami, np. od blaszaka. Jednâ z nasadek nakîadamy na zîâcze
  15. twardego dysku na pîycie Mega RAM-u, natomiast dwa pozostaîe
  16. sîuûâ do podîâczenia dwóch urzâdzeï pracujâcych w ukîadzie
  17. Master/Slave. Oczywiôcie dodatkowe urzâdzenie musi sië znajdowaê
  18. poza obudowâ Mega RAM-u. Jeûeli ktoô ma "mocny" zasilacz, np. od
  19. blaszaka, to dobrze jest wziâê zasilanie przez rozdzielacz ze
  20. zîâcza znajdujâcego sië wewnâtrz Mega RAM-u. Przy oryginalnym
  21. zasilaczu mogâ bowiem wystâpiê problemy. Zaleûy to od mocy
  22. pobieranej przez dyski. Naleûy pamiëtaê o odpowiednim ustawieniu
  23. zworek. Urzâdzenie Master bëdzie widziane jako unit 0, a Slave
  24. jako unit 1.
  25.  
  26. Po poprawnym podîâczeniu urzâdzeï i wîâczeniu komputera okazuje
  27. sië jednak, ûe urzâdzenie Slave nie jest widziane przez komputer.
  28. Przyczynâ tego jest specyficzny sposób napisania sterownika
  29. elsat.device, który znajduje sië w pamiëci ROM na pîycie
  30. kontrolera.
  31.  
  32. Jeûeli mamy podîâczony do expansion port tylko kontroler twardego
  33. dysku, to jego pamiëê ROM rozpoczyna sië od adresu $E90000.
  34.  
  35. W dalszej czëôci przedstawië sposób ominiëcia tego problemu, ale
  36. najpierw chciaîbym powiedzieê, co go powoduje. Otóû w grupie
  37. rejestrów AT-TASK-FILE (sâ to rejestry znajdujâce sië w kaûdym
  38. urzâdzeniu standardu AT-Bus) istnieje rejestr SDH, w którym
  39. zapisujemy numer urzâdzenia, dîugoôê sektora oraz numer gîowicy.
  40. Wyglâda on nastëpujâco:
  41.  
  42. <l> bit  7     równy 1
  43.  
  44. bity 6-5  rozmiar sektora, 512 bajtów kodowane jako 01
  45.  
  46. bit  4    numer urzâdzenia: 1-Slave, 0-Master
  47.  
  48. bity 3-0  numer gîowicy od 0 do 15 
  49.  
  50. <txt>Elsat.device otwierajâc urzâdzenie przygotowuje sobie cztery
  51. najstarsze bity tego rejestru i wpisuje jako bajt do odpowiedniej
  52. struktury z przesuniëciem $14 od jej poczâtku. Nastëpnie
  53. wykonywane sâ rozkazy IDENTIFY DRIVE oraz EXECUTE DIAGNOSTIC i
  54. przed wykonaniem kaûdego z nich nastëpuje przepisanie bajtu ze
  55. struktury do rejestru SDH. Wyglâda to tak: move.w
  56. $14(A3),$C00(A0). Rejestr SDH znajduje sië pod adresem $C01(A0).
  57. Wszystko byîoby w porzâdku, gdyby wczeôniej przygotowany bajt
  58. znajdowaî sië pod adresem $15(A3) (w A3 adres struktury). W tej
  59. sytuacji bity 4-7 rejestru SDH zawsze sâ wyzerowane, co powoduje,
  60. ûe rozkazy odnoszâce sië do dysku Slave (unit 1) nigdy nie bëdâ
  61. przez niego wykonane.
  62.  
  63. Taki rozkaz wystëpuje w elsat.device aû szeôê razy pod
  64. nastëpujâcymi adresami: $E90318, $E9032E, $E90640, $E906C4,
  65. $E9078E, $E907AC. Rozkaz move.w $14(A3),$C00(A0) naleûy zmieniê
  66. na move.b $14(A3),$C01(A0). W pamiëci jest to ciâg cyfr
  67. $316B00140C00, który naleûy zmieniê na $116B00140C01.
  68.  
  69. Idealnym rozwiâzaniem byîoby zastâpienie pamiëci ROM na pîycie
  70. kontrolera poprawnie zaprogramowanymi pamiëciami EPROM. Ale nie
  71. kaûdy ma dostëp do programatora EPROM-ów i nie kaûdy potrafi
  72. wymieniê pamiëê ROM, gdyû jest ona wlutowana w pîytkë. Podajë
  73. wiëc sposób na ominiëcie bîëdów îatwiej, choê moûe mniej
  74. elegancko.
  75.  
  76. Pierwszâ czynnoôciâ, jakâ musimy wykonaê, jest zaalokowanie $1744
  77. bajtów w pamiëci Fast RAM. Dla dalszych rozwaûaï adres
  78. zaalokowanej pamiëci nazwijmy NewDevice. Potem musimy skopiowaê
  79. elsat.device ($1744 bajtów) spod adresu $E90000 do zaalokowanej
  80. pamiëci. Nastëpnie poprawiamy bîëdy, zmieniajâc wyûej
  81. przedstawione ciâgi cyfr, znajdujâce sië w zaaolokowanej pamiëci
  82. pod adresami: NewDevice+$318, NewDevice+$32E, NewDevice+$640,
  83. NewDevice+$6C4, NewDevice+78E, NewDevice+7AC. Po tej czynnoôci
  84. przychodzi czas na zmianë wektorów elsat.device. W liôcie
  85. device'ów odnajdujemy wskaúnik struktury device dla elsat.device,
  86. np. za pomocâ funkcji FINDNAME z exec.library. Nastëpnie
  87. zmieniamy dwa wektory (np. funkcja SETFUNCTION), a mianowicie
  88. wektor -$6, na adres NewDevice+$4ec i wektor -$1E na
  89. NewDevice+$586. Po tych czynnoôciach mamy juû sterownik "widzâcy"
  90. dwa dyski.
  91.  
  92. Partycje na drugim dysku tworzymy, uûywajâc np. programu
  93. HDToolBox. Program ten naleûy uruchomiê z CLI, podajâc jako
  94. parametr elsat.device. Program ten dziaîa poprawnie z systemem
  95. 2.x lub lepszym. Z jego zdobyciem nie bëdzie problemu.
  96. Prawdopodobnie bëdzie go miaî znajomy posiadacz Amigi 1200.
  97.  
  98. Jeûeli podîâczony drugi dysk ma juû wczeôniej utworzone partycje,
  99. to aby je doîâczyê do systemu, naleûy otworzyê elsat.device unit
  100. 1, uûywajâc funkcji OpenDevice, nastëpnie wykonaê funkcjë DoIO z
  101. rozkazem 22 (io_Command=22 w strukturze IOStdReq) i na koniec
  102. zamykamy elsat.device (CloseDevice). Partycje zostanâ podîâczone,
  103. jeôli ich nazwy bëdâ inne niû nazwy partycji na pierwszym dysku.
  104.  
  105. W pierwszym zdaniu celowo uûyîem sîowa "urzâdzenia", a nie dysk,
  106. poniewaû moûe to byê np. CD-ROM. W tym wypadku nie otwieramy
  107. elsat.device i nie wykonujemy rozkazu 22, tylko tworzymy
  108. odpowiedniâ mountlistë.
  109.   
  110. Myôlë, ûe ten krótki opis wystarczy do napisania programu
  111. usuwajâcego problemy z elsat.device, pod warunkiem, ûe choê
  112. trochë potrafisz programowaê w asemblerze bâdú w C. Oczywiôcie
  113. program taki musi byê wywoîywany po kaûdym zresetowaniu
  114. komputera, a zatem najlepiej wywoîanie umieôciê zaraz na poczâtku
  115. startup-sequence.
  116.  
  117.